iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0

先別急著否定ChatGPT,遇到Error有撇步!

我們都有過這樣的經驗,當我們滿心歡喜的找到「可以照著實作」的教學文,打算一頭栽進去實作直搗黃龍,卻狀況百出。

ChatGPT的出現省去我們找資料的時間,但它給出的答案不一定能讓你「一次就過」。如果你遇上亂流的時候要怎麼突破重圍呢? 一起來看看吧!

.
.
.


貓膩在哪?檢查被ChatGPT略過的步驟!

如果你確定你真的沒有漏掉任何一步,那你可能要懷疑,會不會有步驟被ChatGPT略過了,最常見的像是「沒有切換到正確的檔案位置再下指令」。

先別急著翻我白眼XD 憑良心說,你也曾經因為這個原因卡住吧?

不管是網路上的文章,還是ChatGPT給的建議,很多時候不會把 每一個步驟 交代的非常仔細,我們勢必會在某個地方接到意外的驚喜。(ps.在使用Nx建立Angular專案的過程當中,我因為這個原因至少被絆倒兩次😐🙄)

.
.
.


避免雞同鴨講,隨時確認你和ChatGPT在同個頻道!

延續剛剛的話題,當我們按著指示操作但是報錯了,這時候該怎麼辦?我們必須做到兩件事情:

1. 你提供「足夠的資訊」的讓ChatGPT判斷錯誤的原因
2. 搞清楚自己是在哪一個步驟開始出錯的

.

附上我在創建專案初期遇到error時,和ChatGPT的一段對話和Debug的訊息。由於字數很多,因此大家也可以直接看我提的3個問題,再自行腦補一下劇情XD

【擷取對話- 1/3】

我執行了cd CouplesTrip_FrontEnd
但是它顯示
cd: no such file or directory: CouplesTrip_FrontEnd


請你根據我先前提供的終端機訊息
再次確認一下,
1. 我是否已經建立Nx工作區
2. 我是否已經在已存在的Nx工作區建立Angular專案

根據你先前提供的終端機訊息,可以確認以下情況:

(...略..)

請確認一下你當初創建工作區時的名稱,然後使用正確的工作區名稱來進入工作區目錄。如果你確定工作區名稱是 "couples-trip-front-end",則請嘗試使用以下指令來進入工作區目錄:

cd couples-trip-front-end

.

【擷取對話- 2/3】

好的
的確是工作區名字錯誤導致切換不成功
現在我進到工作區了,但是執行下一個指令的時候又抱錯了
chiawendeMacBook-Pro couples-trip-front-end % npx nx serve couples-trip-front-end
 >  NX   Cannot find project 'couples-trip-front-end'

根據你提供的終端機訊息(...中略...),為了解決這個問題,你可以執行以下步驟:

1.確保工作區的名稱正確:
確保你創建工作區時使用的名稱為 "couples-trip-front-end"。如果不確定,可以檢查 workspace.json 檔案中的名稱設定。

2.檢查專案名稱:
確保你創建 Angular 專案時使用了正確的專案名稱。請確保你執行 npx nx generate @nrwl/angular:app couples-trip-front-end 時的專案名稱與你執行 npx nx serve couples-trip-front-end 時提供的專案名稱相同。

3.重新啟動:
有時候出現這種奇怪的錯誤可能是臨時性的。你可以嘗試關閉終端機,重新啟動並確保你在正確的工作區目錄中,然後再次執行指令。

.

【擷取對話- 3/3】

好的 看起來我們找到問題了
因為我們還沒執行過npx nx generate @nrwl/angular:app couples-trip-front-end啊

你檢查一下你之前給我的訊息

非常抱歉,我理解錯了你的問題。確實,你之前提供的終端機訊息中並沒有顯示你已經執行過 npx nx generate @nrwl/angular:app couples-trip-front-end 這個指令來建立 Angular 專案。

這個指令是創建 Angular 專案的重要步驟,而你之前的訊息中只有一部分選項配置的內容,並沒有完整的指令。請你在終端機中執行以下指令來建立 Angular 專案:

npx nx generate @nrwl/angular:app couples-trip-front-end

這個指令將會創建一個名為 "couples-trip-front-end" 的 Angular 專案,並將相關的配置和文件加入到工作區中。之後,你就可以使用 npx nx serve couples-trip-front-end 來運行這個專案。

.
.
.


對話結束了嗎?——淺談文字對談容易造成的誤區

在與ChatGPT進行文字對話的過程裡,它沒辦法每次都很精準地判斷「一段對話的結束」是什麼時候,這造成對談雙方很容易對彼此目前所處的步驟、狀況有錯誤的判斷

你有兩種方式可以確定這件事:

  1. 向ChatGPT提問:了解它對目前狀況的認知
  2. 主動告知你的狀況:
    比方像是你的步驟。但儘量提供具體一點的資訊,例如:檔案結構、所處位置、最近幾個打的指令和log結果,這些都是屬於比較客觀的訊息

.
.
.


不只是打指令:深入了解指令的涵義

就以剛剛提到的,我在新增檔案的時候沒有切換到正確的檔案位置下指令,而小小卡關了一下。這其實背後反應了一些問題,包括我其實並不清楚這些指令的意義。

在反覆地把終端機的錯誤訊息貼給ChatGPT再做修正。幾個來回後我得到以下重要的發現:

1. Nx特有的「工作空間(workspace)」:
   因此,我們要先用Nx先去新增一個workspace資料夾,再從這個workspace去新增一個Angular專案
2. 使用了Nx之後,會有 Nx CLI 去下指令,取代原本 Angular CLI 在做的事

.

看到報錯的紅字很惱怒,但為了解決的問題,我對照去比較了 Nx CLI 和 Angular CLI 在新增專案時所用的指令,更進一步掌握Nx在環境建置的過程中所扮演的角色。現在回頭來看這個除錯的過程,是一個很棒機會去仔細了解自己不熟的地方。(但麻煩不要太多,我的心臟負荷不了XD)

.
.
.


實戰回顧

在「已知」的狀態去處理事情,跟在「未知」的狀態去處理事情,是非常不一樣的概念。而我們必須認知到,我們當前在處理問題時,自己是處理哪一個狀態,因為這會延伸成不一樣的詰問方式。

我們是以技術程度較低的情況下,要去引導一個比自己更全能的工具,和自己完成一起完成專案。想一想,這在現實的團隊開發過程中也不會是件容易的事。只能慶幸,ChatGPT不是一個真的有血有肉的人,不然我們可能得每天看他們的臉色剉咧等XD

希望今天的分享對你有點幫助:)


上一篇
翻越心中的技術高牆(1):用Nx打造SSR/Monorepo專案實作篇
下一篇
11-3 翻越心中的技術高牆(2):設定SSR
系列文
軟體工程師必備的AI工具力—— 全方位實戰應用X核心Mindset養成30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言